#include<iostream>

class Test
{
private:

public:
    Test(){std::cout<<"构造函数\n";}
    void show()
    {
        std::cout<<"show\n";
    }
    ~Test()
    {
        std::cout<<"析构函数\n";
    }
};


class Direved:public Test
{

};

void func()
{
    //栈的解旋： 在抛出异常之后，栈上的对象都会自动析构

    // Test t;
    // throw"test";//抛出异常后，后面的代码不再执行
    Direved d;
    
    throw d;

    std::cout<<"1"<<std::endl;
}

int main()
{
    try
    {
        func();
    }
    
    
    // 抛出的 异常对象 会在捕获结束之后进行释放
    // 捕获异常支持向上转型
    
    catch(const Test& str)
    {
        std::cout<< "buhuo" << '\n';
    }

    return 0;
}






